package com.pearl.generator.pojo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.pearl.generator.pojo.entity.BaseEntity;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 实体类配置表
 * </p>
 *
 * @author TangDan
 * @since 2022-08-05
 */
@Getter
@Setter
@TableName("pearl_generator_entity_config")
@ApiModel(value = "GeneratorEntityConfig对象", description = "实体类配置表")
public class GeneratorEntityConfig extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("主键ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty("名称")
    private String name;

    @ApiModelProperty("名称转换实现")
    private String nameConvert;

    @ApiModelProperty("设置父类")
    private String superClass;

    @ApiModelProperty("禁用生成 serialVersionUID，默认值:true")
    private Integer disableSerialVersionUid;

    @ApiModelProperty("开启生成字段常量，默认值:false")
    private Integer enableColumnConstant;

    @ApiModelProperty("开启链式模型，默认值:false")
    private Integer enableChainModel;

    @ApiModelProperty("开启 Lombok,默认值:false")
    private Integer enableLombok;

    @ApiModelProperty("开启 Boolean 类型字段移除 is 前缀,默认值:false")
    private Integer enableRemoveIsPrefix;

    @ApiModelProperty("开启生成实体时生成字段注解")
    private Integer enableTableFieldAnnotation;

    @ApiModelProperty("开启 ActiveRecord 模型，默认值:false")
    private Integer enableActiveRecord;

    @ApiModelProperty("乐观锁字段名(数据库)")
    private String versionColumnName;

    @ApiModelProperty("乐观锁属性名(实体)")
    private String versionPropertyName;

    @ApiModelProperty("逻辑删除字段名(数据库)")
    private String logicDeleteColumnName;

    @ApiModelProperty("逻辑删除属性名(实体)")
    private String logicDeletePropertyName;

    @ApiModelProperty("数据库表映射到实体的命名策略,默认下划线转驼峰命名:NamingStrategy.underline_to_camel")
    private String naming;

    @ApiModelProperty("数据库表字段映射到实体的命名策略,默认为 null，未指定按照 naming 执行")
    private String columnNaming;

    @ApiModelProperty("添加父类公共字段")
    private String addSuperEntityColumns;

    @ApiModelProperty("添加忽略字段")
    private String addIgnoreColumns;

    @ApiModelProperty("添加表字段填充")
    private String addTableFills;

    //    AUTO(0),
    //    NONE(1),
    //    INPUT(2),
    //    ASSIGN_ID(3),
    //    ASSIGN_UUID(4);
    @ApiModelProperty("全局主键类型")
    private Integer idType;

    @ApiModelProperty("转换文件名称")
    private String convertFileName;

    @ApiModelProperty("格式化文件名称")
    private String formatFileName;


}
